/**
 * PagGerenciaColaboradores.java
 *
 * Projeto: SGA-LEDS
 *
 * Rodrigo Soares Maia IFES - Instituto Federal do Espírito Santo - Campus Serra
 */
package controleInterno.cih;

import controleInterno.cci.CtrlInterno;
import controleInterno.cdp.Colaborador;
import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Messagebox;

public class PagGerenciaColaboradores extends GenericForwardComposer
{
    private Listbox listaColaboradores;
    CtrlInterno ctrl = CtrlInterno.getInstance();

    @Override
    public void doAfterCompose(Component comp) throws Exception
    {
        super.doAfterCompose(comp);

        ctrl.setPagGerenciaColaboradores(this);

        while (listaColaboradores.getItemCount() > 0)
        {
            listaColaboradores.removeItemAt(0);
        }

        List<Colaborador> colaboradores;
        colaboradores = ctrl.obterColaboradores();

        if (colaboradores != null)
        {
            for (int i = 0; i < colaboradores.size(); i++)
            {
                Colaborador c = colaboradores.get(i);
                Listitem linha = new Listitem(colaboradores.get(i).toString(), c);
                
                linha.appendChild(new Listcell(c.getDataIngresso().getTime().getDate() + "/"
                        + (c.getDataIngresso().getTime().getMonth() + 1) + "/"
                        + (c.getDataIngresso().getTime().getYear() + 1900)));
                
                linha.setParent(listaColaboradores);
            }
        }
    }

    public void onClick$novoColaborador(Event event)
    {
        ctrl.abrirIncluirColaborador();
    }

    public void onClick$editarColaborador(Event event)
    {
        Listitem listitem = listaColaboradores.getSelectedItem(); //Pega o colaborador selecionado
        
        if (listitem != null)
        {
            ctrl.abrirEditarColaborador((Colaborador) listitem.getValue());

        }
        else
        {
            //setMensagemAviso("info", "Selecione um colaborador!");
        }
    }

    public void onClick$excluirColaborador(Event event)
    {
        Listitem listitem = listaColaboradores.getSelectedItem(); //Pega o colaborador selecionado
        
        if (listitem != null)
        {
            eventoExcluir();
        }
        else
        {
            //setMensagemAviso("info", "Selecione um colaborador!");
        }
    }

    public void eventoExcluir() //Método feito para a mensagem de confirmação de exclusão
    {
        Messagebox.Button b1 = Messagebox.Button.YES;
        Messagebox.Button b2 = Messagebox.Button.NO;
        Messagebox.Button[] b = new Messagebox.Button[2];
        b[0] = b1;
        b[1] = b2;

        EventListener<Messagebox.ClickEvent> e = new EventListener()
        {
            public void onEvent(Event evt) throws InterruptedException
            {
                if (evt.getName().equals("onYes"))
                {
                    Listitem listitem = listaColaboradores.getSelectedItem();
                    Colaborador c = listitem.getValue();
                    if (ctrl.apagarColaborador(c)) //Verifica se é possível apagar a categoria, se for ela eh apagada
                    { 
                        listaColaboradores.removeItemAt(listaColaboradores.getSelectedIndex());
                        //setMensagemAviso("success", "Categoria excluída com sucesso!");
                    }
                    else
                    {
                        //setMensagemAviso("error", "Não foi possível excluir a Categoria, já possui vinculos!");
                    }
                }
            }
        };

        Messagebox.show("Deseja excluir o colaborador?", "Confirmação", b, Messagebox.QUESTION, e); //Mensagem de confirmacao de exclusao
    }
    
    public void onDoubleClick$listaColaboradores(Event event)
    {
        Colaborador c = (Colaborador) listaColaboradores.getSelectedItem().getValue();
        
        ctrl.abrirConsultarColaborador(c);
    }
    
    public void addColaborador(Colaborador c) {
        Listitem linha = new Listitem(c.getNome(), c);
                
                
        linha.appendChild(new Listcell(c.getDataIngresso().getTime().getDate() + "/"
                + (c.getDataIngresso().getTime().getMonth() + 1) + "/"
                + (c.getDataIngresso().getTime().getYear() + 1900)));

        linha.setParent(listaColaboradores);
    }

    //Atualiza apenas uma atividade
    public void refreshColaborador(Colaborador c) {
        for (int i = 0; i < listaColaboradores.getItemCount(); i++) {
            if (listaColaboradores.getItemAtIndex(i).getValue() == c) {
                listaColaboradores.getItemAtIndex(i).getChildren().clear();
                listaColaboradores.getItemAtIndex(i).appendChild(new Listcell(c.getNome()));
                listaColaboradores.getItemAtIndex(i).appendChild(new Listcell(c.getDataIngresso().getTime().getDate() + "/"
                + (c.getDataIngresso().getTime().getMonth() + 1) + "/"
                + (c.getDataIngresso().getTime().getYear() + 1900)));
                
                break;
            }
        }
    }
}
